package outbound_task

import (
	"context"
	"git.mycaigou.com/gfyx/micro-gfyx-oppty-service/infrastructure/common/utils"
	"gorm.io/gorm"
)

type OutBoundTaskRepositoryIface interface {
	// SaveTask 保存任务记录
	SaveTask(ctx context.Context, po *GfyxOutboundTaskPo) (*GfyxOutboundTaskPo, error)
	// UpdateTask 更新任务记录
	UpdateTask(ctx context.Context, conditions map[string]interface{}, columns map[string]interface{}) (bool, error)
	// GetTaskByTaskIds 获取任务记录
	GetTaskByTaskIds(ctx context.Context, taskIds []int64) ([]*GfyxOutboundTaskPo, error)
	// GetTaskList 获取任务列表
	GetTaskList(ctx context.Context, condition map[string]interface{}, pageInfo *utils.PageInfo) (int64, []*GfyxOutboundTaskPo, error)
	// GetTaskByRealTaskId 通过百应的任务id获取任务记录
	GetTaskByRealTaskId(ctx context.Context, realTaskId int64) (*GfyxOutboundTaskPo, error)
	// SaveTaskPushUser 保存任务推送用户
	SaveTaskPushUser(ctx context.Context, taskId int64, pushUser []*GfyxOutboundTaskPushUserPo) (bool, error)
	// GetTaskPushUserByRealTaskId 通过百应任务id获取任务的推送用户
	GetTaskPushUserByRealTaskId(ctx context.Context, realTaskId int64) ([]*GfyxOutboundTaskPushUserPo, error)
	// SaveTaskLog 保存回调记录
	SaveTaskLog(ctx context.Context, po *GfyxOutboundTaskLogPo) (*GfyxOutboundTaskLogPo, error)
	// 修改回调记录
	UpdateTaskLog(ctx context.Context, db *gorm.DB, conditions map[string]interface{}, columns map[string]interface{}) (bool, error)
	InsertTaskLogChangeRecord(ctx context.Context, db *gorm.DB, record *GfyxOutboundTaskLogChangeRecordPo) error
	// QueryTaskLogList 查询回调列表数据
	QueryTaskLogList(ctx context.Context, condition map[string]interface{}, pageInfo *utils.PageInfo) (int64, []*GfyxOutboundTaskLogPo, error)
	GetTaskLogByCallInstanceId(ctx context.Context, callInstanceId int64) (*GfyxOutboundTaskLogPo, error)
}
